/** **/
package com.zte.claa.inficombo.csa.app.model.redis;

import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;

public class ProjectDev implements Serializable {
	public static final String DATE_FORMAT = "yyyy-MM-dd";
	public static final String TIME_ZONE = "GMT+8";
	// 终端分类：0-普通lora终端；1-传感终端（不带Lora模块）;  2-蓝牙标签；12-中移NB设备；13-电信NB设备；14-联通NB设备；
	public static final byte DEV_TPFLAG_LORA = 0;
	public static final byte DEV_TPFLAG_SENSOR = 1;
	public static final byte DEV_TPFLAG_NB_CMCC = 12;
	public static final byte DEV_TPFLAG_NB_CTCC = 13;
	public static final byte DEV_TPFLAG_NB_CUCC = 14;
	
	// deveui中dtueui和sensorid的分隔符.
	public static final String EUI_SEPEATOR = "@";
	
    // 设备开通状态
	public static final short STATUS_NEW = 0; //新建
	public static final short STATUS_ONLINE = 1; //开通
	public static final short STATUS_OFFLINE = 2; //注销
	public static final short STATUS_UNKNOWN = 3; //异常
	
	/**
	 * runstate	运行状态	Byte	3	N	
	    3-未知；
		1-在线；
		2-离线；
		0-JOIN；
	 */
	public static final byte RUN_STATE_JOIN = 0;
	public static final byte RUN_STATE_ONLINE = 1;
	public static final byte RUN_STATE_OFFLINE = 2;
	public static final byte RUN_STATE_UNKNOWN = 3;	
	
	/**
     * 终端EUI
     */
    private String deveui;

    /**
     * 项目ID
     */
    private String projectid;

    /**
     * 终端名称
     */
    private String devname;

    /**
     * 设备类型
     */
    private String devtype;
    
    // 设备分类标记.
    private byte devflag = DEV_TPFLAG_LORA;
    
    // 归属dtu的deveui.
    private String dtueui;

    /**
     * 应用编号
     */
    private String appeui;

    /**
     * Lora类型
     */
    private String loratype;

    /**
     * 网络识别码
     */
    private String joineui;

    /**
     * App根密钥
     */
    private String appkey;

    /**
     * 传输根密钥
     */
    private String nwkkey;

    /**
     * 终端模板编号
     */
    private String moteprofile;

    /**
     * 服务模板编号
     */
    private String servprofile;

    /**
     * 应用状态
     */
    private Short status;

    /**
     * 运行状态
     */
    private Byte runstate = RUN_STATE_UNKNOWN;
    /**
     * 启用日期
     */
    @JsonFormat(pattern=DATE_FORMAT, timezone = TIME_ZONE)
    private Date usetime;

    /**
     * 设备安装位置
     */
    private String addr;

    /**
     * 设备安装点GPS纬度
     */
    private Double gpslat;

    /**
     * 设备安装点GPS经度
     */
    private Double gpslng;

    /**
     * 设备安装点海拔
     */
    private Integer gpsalt;

    /**
     * 备注
     */
    private String remark;

    /**
     * t_combo_project_dev
     */
    private static final long serialVersionUID = 1L;

    /**
     * 终端EUI
     * @return DEVEUI 终端EUI
     */
    public String getDeveui() {
        return deveui;
    }

    /**
     * 终端EUI
     * @param deveui 终端EUI
     */
    public void setDeveui(String deveui) {
        this.deveui = deveui;
    }

    /**
     * 项目ID
     * @return PROJECTID 项目ID
     */
    public String getProjectid() {
        return projectid;
    }

    /**
     * 项目ID
     * @param projectid 项目ID
     */
    public void setProjectid(String projectid) {
        this.projectid = projectid;
    }

    /**
     * 终端名称
     * @return DEVNAME 终端名称
     */
    public String getDevname() {
        return devname;
    }

    /**
     * 终端名称
     * @param devname 终端名称
     */
    public void setDevname(String devname) {
        this.devname = devname;
    }

    /**
     * 设备类型
     * @return DEVTYPE 设备类型
     */
    public String getDevtype() {
        return devtype;
    }

    /**
     * 设备类型
     * @param devtype 设备类型
     */
    public void setDevtype(String devtype) {
        this.devtype = devtype;
    }

    /**
     * 应用编号
     * @return APPEUI 应用编号
     */
    public String getAppeui() {
        return appeui;
    }

    /**
     * 应用编号
     * @param appeui 应用编号
     */
    public void setAppeui(String appeui) {
        this.appeui = appeui;
    }

    /**
     * Lora类型
     * @return LORATYPE Lora类型
     */
    public String getLoratype() {
        return loratype;
    }

    /**
     * Lora类型
     * @param loratype Lora类型
     */
    public void setLoratype(String loratype) {
        this.loratype = loratype;
    }

    /**
     * 网络识别码
     * @return JOINEUI 网络识别码
     */
    public String getJoineui() {
        return joineui;
    }

    /**
     * 网络识别码
     * @param joineui 网络识别码
     */
    public void setJoineui(String joineui) {
        this.joineui = joineui;
    }

    /**
     * App根密钥
     * @return APPKEY App根密钥
     */
    public String getAppkey() {
        return appkey;
    }

    /**
     * App根密钥
     * @param appkey App根密钥
     */
    public void setAppkey(String appkey) {
        this.appkey = appkey;
    }

    /**
     * 传输根密钥
     * @return NWKKEY 传输根密钥
     */
    public String getNwkkey() {
        return nwkkey;
    }

    /**
     * 传输根密钥
     * @param nwkkey 传输根密钥
     */
    public void setNwkkey(String nwkkey) {
        this.nwkkey = nwkkey;
    }

    /**
     * 终端模板编号
     * @return MOTEPROFILE 终端模板编号
     */
    public String getMoteprofile() {
        return moteprofile;
    }

    /**
     * 终端模板编号
     * @param moteprofile 终端模板编号
     */
    public void setMoteprofile(String moteprofile) {
        this.moteprofile = moteprofile;
    }

    /**
     * 服务模板编号
     * @return SERVPROFILE 服务模板编号
     */
    public String getServprofile() {
        return servprofile;
    }

    /**
     * 服务模板编号
     * @param servprofile 服务模板编号
     */
    public void setServprofile(String servprofile) {
        this.servprofile = servprofile;
    }

    /**
     * 应用状态
     * @return STATUS 应用状态
     */
    public Short getStatus() {
        return status;
    }

    /**
     * 应用状态
     * @param status 应用状态
     */
    public void setStatus(Short status) {
        this.status = status;
    }

    /**
     * 启用日期
     * @return USETIME 启用日期
     */
    public Date getUsetime() {
        return usetime;
    }

    /**
     * 启用日期
     * @param usetime 启用日期
     */
    public void setUsetime(Date usetime) {
        this.usetime = usetime;
    }

    /**
     * 设备安装位置
     * @return ADDR 设备安装位置
     */
    public String getAddr() {
        return addr;
    }

    /**
     * 设备安装位置
     * @param addr 设备安装位置
     */
    public void setAddr(String addr) {
        this.addr = addr;
    }

    /**
     * 设备安装点GPS纬度
     * @return GPSLAT 设备安装点GPS纬度
     */
    public Double getGpslat() {
        return gpslat;
    }

    /**
     * 设备安装点GPS纬度
     * @param gpslat 设备安装点GPS纬度
     */
    public void setGpslat(Double gpslat) {
        this.gpslat = gpslat;
    }

    /**
     * 设备安装点GPS经度
     * @return GPSLNG 设备安装点GPS经度
     */
    public Double getGpslng() {
        return gpslng;
    }

    /**
     * 设备安装点GPS经度
     * @param gpslng 设备安装点GPS经度
     */
    public void setGpslng(Double gpslng) {
        this.gpslng = gpslng;
    }

    /**
     * 设备安装点海拔
     * @return GPSALT 设备安装点海拔
     */
    public Integer getGpsalt() {
        return gpsalt;
    }

    /**
     * 设备安装点海拔
     * @param gpsalt 设备安装点海拔
     */
    public void setGpsalt(Integer gpsalt) {
        this.gpsalt = gpsalt;
    }

    /**
     * 备注
     * @return REMARK 备注
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 备注
     * @param remark 备注
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

	public Byte getRunstate() {
		return runstate;
	}

	public void setRunstate(Byte runstate) {
		this.runstate = runstate;
	}

	public byte getDevflag() {
		return devflag;
	}

	public void setDevflag(byte devflag) {
		this.devflag = devflag;
	}

	public String getDtueui() {
		return dtueui;
	}

	public void setDtueui(String dtueui) {
		this.dtueui = dtueui;
	}

	@Override
	public String toString() {
		return "ProjectDev [deveui=" + deveui + ", projectid=" + projectid + ", devname=" + devname + ", devtype="
				+ devtype + ", appeui=" + appeui + ", loratype=" + loratype + ", joineui=" + joineui + ", appkey=***"
				+ ",nwkkey=***, moteprofile=" + moteprofile + ", servprofile=" + servprofile
				+ ", status=" + status + ", runstate=" + runstate + ", usetime=" + usetime + ", addr=" + addr
				+ ", gpslat=" + gpslat + ", gpslng=" + gpslng + ", gpsalt=" + gpsalt + ", remark=" + remark 
				+ ", dtueui=" + this.dtueui+", devflag="+this.devflag + "]";
	}
	
	/**
	 * 公用方法：构造sensorEui
	 * 
	 * @param sensorId
	 * @param dtuDevEui
	 * @return
	 */
	public static String formatSensorEui(String sensorId, String dtuDevEui){
		return sensorId+EUI_SEPEATOR+dtuDevEui;
	}
	
	/**
	 * 公用方法：从sensorEui中解析sensorid
	 * 
	 * @param sensorEui
	 * @return
	 */
	public static String parseSensorId(String sensorEui){
		if(sensorEui == null || sensorEui.trim().equals("")){
			return "";
		}
		int index = sensorEui.lastIndexOf(EUI_SEPEATOR);
		if(index > 0){
			return sensorEui.substring(0, index);
		}
		return "";
	}
	
	/**
	 * 公用方法：从sensorEui中解析归属DTUEui
	 * 
	 * @param sensorEui
	 * @return
	 */
	public static String parseSensorDtuEui(String sensorEui){
		if(sensorEui == null || sensorEui.trim().equals("")){
			return "";
		}
		int index = sensorEui.lastIndexOf(EUI_SEPEATOR);
		if(index >= 0){
			return sensorEui.substring(index+1);
		}
		return sensorEui;
	}
	
}